# import my_module  # 导入模块的时候，会把整个代码都执行一遍
# import my_module2

# print(my_module.my_sum(10))
# my_module.my_sum(10)


# 名字冲突问题
from my_module import *
from my_module2 import test as other_test # 解决名字冲突问题起别名
# print(test(6)) # 名字冲突问题
# print(test(3)) # 因为在 my_module.py中 定义了 __all__ = ['my_sum']  # 声明当前模块，只能公开my_sum函数，test不让调用
other_test(2)
#
import sys
print(sys.path)
import random

# sys.path 输出
# ['D:\\python_www\\tch01', 'D:\\python_www\\tch01',
# 'D:\\software\\PyCharm 2025.2.1.1\\plugins\\python-ce\\helpers\\pycharm_display',
# 'C:\\python-3.12\\python312.zip', 'C:\\python-3.12\\DLLs', 'C:\\python-3.12\\Lib', 'C:\\python-3.12',
# 'D:\\python_www\\tch01\\.venv', 'D:\\python_www\\tch01\\.venv\\Lib\\site-packages',
# 'D:\\software\\PyCharm 2025.2.1.1\\plugins\\python-ce\\helpers\\pycharm_matplotlib_backend',
# 'D:\\software\\PyCharm 2025.2.1.1\\plugins\\python-ce\\helpers\\pycharm_altair_backend',
# 'D:\\software\\PyCharm 2025.2.1.1\\plugins\\python-ce\\helpers\\pycharm_plotly_backend']

# 注意事项
# 1. 如果使用from .. import ..或from .. import *导入多个模块的时候，且模块内有同名功能。当调用这个同名功能的时候，调用到的是后面导入的模块的功能。
# 2. 当导入一个模块，Python解析器对模块位置的搜索顺序是：
#   1. 当前目录
#   2. 如果不在当前目录，Python则搜索在shell变量PYTHONPATH下的每个目录。 sys.path可以查看
# 3. 自己的文件名不要和已有模块名重复，否则导致模块功能无法使用。


# 2.5、__all__
# 如果一个模块文件中有变量，当使用from xxx import *导入时，只能导入这个列表中的元素。 但是：import 模块名字的方式，不起作用！
# __all__ = ['testA']
#
# def testA():
#     print('testA')
#
# def testB():
#     print('testB')